package com.event.management.backend.config;

import cn.dev33.satoken.stp.StpInterface;
import com.event.management.backend.domain.Users;
import com.event.management.backend.mapper.UsersMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * 自定义Sa-Token权限验证接口实现
 */
@Component
@Slf4j
public class SaTokenCustomStpImpl implements StpInterface {

    @Autowired
    private UsersMapper usersMapper;

    /**
     * 返回指定账号id所拥有的权限码集合
     * @param loginId 登录ID
     * @param loginType 登录类型
     * @return 权限码集合
     */
    @Override
    public List<String> getPermissionList(Object loginId, String loginType) {
        // 返回空列表，我们暂时不使用细粒度权限控制
        return Collections.emptyList();
    }

    /**
     * 返回指定账号id所拥有的角色标识集合
     * @param loginId 登录ID
     * @param loginType 登录类型
     * @return 角色标识集合
     */
    @Override
    public List<String> getRoleList(Object loginId, String loginType) {
        // 获取用户ID
        int userId;
        try {
            userId = Integer.parseInt(loginId.toString());
        } catch (Exception e) {
            log.error("获取用户ID失败: {}", e.getMessage());
            return Collections.emptyList();
        }
        
        log.info("获取用户角色, userId={}", userId);
        
        // 查询用户数据
        Users user = usersMapper.selectById(userId);
        if (user == null) {
            log.warn("用户不存在, userId={}", userId);
            return Collections.emptyList();
        }
        
        String role = user.getRole();
        log.info("获取到用户角色: {}", role);
        
        List<String> roles = new ArrayList<>();
        roles.add(role);  // 添加用户角色
        
        return roles;
    }
} 